#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>

int main(int argc,char* argv[])
{
	//读出文件中的内容
	struct stat st = {0};
	int ret = stat(argv[1],&st);
	if(-1 == ret)
	{
		printf("获取文件%s状态失败:%m\n",argv[1]);
		return -2;
	}
	printf("文件%s大小为:%u字节\n",argv[1],st.st_size);

	//1.打开文件：
	int fd = open(argv[1],O_RDWR);

	//2.映射成虚拟内存：
	char* pTemp = mmap(NULL,st.st_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
	if(NULL == pTemp)
		printf("映射虚拟内存失败:%m\n"),exit(-1);
	printf("映射虚拟内存:%m\n");

	//3.内存操作：
	printf("%s\n",pTemp);														   //读访问 内存  内存就是文件

	strcpy(pTemp,"mmap用于创建内存映射的系统调用，返回的是映射的虚拟内存的首地址");		//写访问 内存  内存就是文件 

	//4.解除映射：
	munmap(pTemp,st.st_size);

	//5.关闭文件：
	close(fd);

	return 0;
}